import {
  RECIEVE_ADDRESS,
  RECIEVE_CATEGORYS,
  RECIEVE_GOODS,
  RECIEVE_SHOPS,
  RECEIVE_USER_INFO,
  RECEIVE_RATINGS,
  RECIEVE_INFO,
  INCREMENT_FOOD_COUNT,
    DECREMENT_FOOD_COUNT,
    CLEAR_CART,
    RECEIVE_SEARCH_SHOPS
} from "@/store/mutation-types";
import {reqAddress,reqfoodCategorys,reqShops,reqShopGoods,reqShopInfo,reqShopRatings,reqSearchShop,reqUserInfo} from "@/api";



export default {
  //异步获取地址
  async getAddress({commit,state}) {
    //发送异步ajax请求
    const geohash = state.latitude + ',' + state.longitude
    const result = await reqAddress(geohash)
    //提交一个mutation
    if(result.code === 0) {
      const address = result.data
      commit(RECIEVE_ADDRESS,{address})
    }
  },
  //异步获取食品分类
  async getCategorys({commit}) {
    //发送异步ajax请求
    const result = await reqfoodCategorys()
    //提交一个mutation
    if(result.code === 0) {
      const categorys = result.data
      commit(RECIEVE_CATEGORYS,{categorys})
    }
  },
  //异步获取商家
  async getShops({commit,state}) {
    //发送异步ajax请求
    const {latitude,longitude} = state
    const result = await reqShops(longitude,latitude)
    //提交一个mutation
    if(result.code === 0) {
      const shops = result.data
      commit(RECIEVE_SHOPS,{shops})
    }
  },
  //同步记录用户信息
  recordUser({commit},userInfo){
    commit(RECEIVE_USER_INFO,{userInfo})
  },
  //异步获取用户信息
  async getUserInfo({commit}) {
    const result = await reqUserInfo()
    if(result.code === 0) {
      const user = result.data
      commit(RECEIVE_USER_INFO,{userInfo})
    }
  },
  // 异步获取商家商品列表
  async getShopGoods({commit}, callback) {
    const result = await reqShopGoods()
    if (result.code === 0) {
      const goods = result.data
      commit(RECIEVE_GOODS, {goods})
      // 数据更新了, 通知一下组件
      callback && callback()
    }
  },
  //异步获取商家信息
  async  getShopInfo({commit}) {
    const result = await reqShopInfo()
    if (result.code === 0) {
      const info = result.data
      // info.score=3.5
      commit(RECIEVE_INFO, {info})
    }
  },
  //异步获取商家评价列表
  async getShopRatings({commit},callback) {
    const result = await reqShopRatings()
    if(result.code === 0) {
      const ratings = result.data
      commit(RECEIVE_RATINGS,{ratings})
    }
    // 数据更新了, 通知一下组件
    callback && callback()
  },
  //同步更新food中的count值
  updateFoodCount({commit},{isAdd,food}) {
    if(isAdd) {
      commit(INCREMENT_FOOD_COUNT,{food})
    }else {
      commit(DECREMENT_FOOD_COUNT,{food})
    }
  },
  //清空购物车
  clearCart({commit}) {
    commit(CLEAR_CART)
  },
  //
  async searchShops({commit,state},keyword) {
    const geohash = state.latitude + ',' + state.longitude
    const result = await reqSearchShop(geohash,keyword)
    if (result.code === 0) {
      const searchShops = result.data
      commit(RECEIVE_SEARCH_SHOPS, {searchShops})
    }
  }
}
